The LineShare software is based on the feature supported with most modern modems: automatic detection of the incoming call type.
Generally, LineShare can be used with any modem and with any types of incoming calls, if there is a method to detect the type of a call.
When started, LineShare takes the selected serial port and controls that port itself, running the selected LineShare script.
It also creates several "subPorts" and register them with CTB, so their names and icons appear in port lists of CTB-compatible applications/tools. These virtual subPorts are for use with communication servers. The number and names of subPorts to be created are defined in the LineShare script.
When a server (like ARA, or FaxSTF, or BBS) opens such a "subPort", LineShare emulates a modem without connecting the server to the real device. So, several servers can work simultaneously, each sending commands to its own dedicated "subPort".
-----
Note: only Hayes-compatible and Fax Class II modems are emulated in this version.
-----
When an incoming call is detected, LineShare detects the type of the call and attaches the proper subPort to the real line - so the call will be processed with the proper server.
When a server sends the dial command through its port, LineShare resets the real device, sends commands to tune the device as necessary for that server and dial the requested number. After connection is established, LineShare attaches the virtual subPort to the real device - and then the server starts the communication session.
When a session is completed, LineShare disconnects the subPort from the line and connects the subPort to the emulator.
The name (and icon) of the real port controlled with LineShare remains visible and this port is available for any communication program: when any application attempts to open that port, LineShare resets the modem and allows the application to use the real device. When the application closes the port, LineShare starts line monitoring again.
Put the LineShare control panel into the Control Panels folder and the LineShare Scripts folder - into the System folder. The ARA/LineShare file should be placed into the Extensions folder.
Restart the computer.
2. Enabling line sharing.
a) Open the LineShare control panel.
b) Select the serial port with the modem you want to share.
c) Click the Attach button. The Attach dialog box appears.
d) Select the proper script: it should correlate with your modem type and with types of services you want to provide - for example: "Supra Fax&ARA"
e) Select desired options (number of rings, speaker, etc)
f) Click the Attach button.
The list of attached "subPorts" appears in the control panel.
LineShare starts to tune your modem for receiving incoming calls.
Note: it is recommended to restart your computer at this moment: it eliminates many problems with the not-Arbitrator compatible application. There is a small incompatibilty even in the ARA software itself - so it would be really better to restart.
3. Tuning servers.
a) Open the server control window (Remote Access Setup for ARA, Chooser for FaxSTF, etc).
b) Select the proper serial port (i.e. "Data@Modem Port" instead of "Modem Port" for ARA, "Fax@Modem Port" for FaxSTF, etc).
c) if the LineShare script you've selected is designed exactly for ARA, you can select the "ARA/LineShare" script in the Remote Access Setup - this is the simplest ARA script, modem independent: it can be used since all modem-dependent commands are executed in the LineShare script.
d) if a server has an option that allows you to set the number of rings to wait before processing the call - set this to 1: the number of rings to wait is controlled with LineShare and non-1 settings result in additional delays only.
Pay attention to non-application servers (like FaxSTF): after you have selected the new modem port, many of them don't close the previosly used port in the proper manner. It happens without LineShare as well - but it's unlikely that you changed ports before installing LineShare. So, it is recomended to restart the computer again.
The LineShare scripting language is an extension of the Apple's CCL used with ARA.
• Command added:
ATTACH <subPort name> [(disconnect-detectors)]
this command is used when the connection is established and the target subPort is detected. The (<disconnect-detectors>) clause can be used to set the monitoring options:
these options allow LineShare to disconnect the subPort from the line when the session is over. You can set the following options:
DTR - disconnect when the application sends the "Drop DTR" command to the port;
ESCAPE - disconnect when --- " ---- the escape sequence (+++) to the port;
RESET - disconnect when the application resets the port;
BREAK - disconnect when the application sends the break signal;
CTS - disconnect when the CTS signal is negated;
TIMELIMIT=nnn - disconnect in nnn seconds after the start of the session;
IDLELIMIT=nnn - disconnect if there is no data flow through the port during nnn seconds.
If (<disconnect-detectors>) is absent, the default settings are in effect: (DTR,ESCAPE,IDLELIMIT=60,TIMELIMIT=600)
Samples:
ATTACH "Data"
ATTACH "Fax" (DTR,Escape,TimeLimit=900)
When you have problems with your servers, you should watch the LineShare control panel:
if you see that the line is attached to the proper subPort, but immediately after this LineShare starts the "resetting" phase - it means that one of the <disconnect-detectors> cannot be used with that server and should be disabled (for example, you've enabled the RESET detector, but your server software resets the port at the beginning of the session, not only at the end).
If you see that the line remains attached to the subPort when the server ends the session (i.e. a fax message has been received, an ARA client has disconnected, etc), enable more detectors in the Options dialog: the enabled ones cannot detect the end of the session.
If your modem cable doesn't support hardware handshake, the "CTS" detector is the best choice - but check your cable first.
Usually, the "DTR" detector should be enabled (and works fine with correctly written ARA scripts).
• Command added:
QUEUEINPUT <string>
this command places the specified string into the input buffer. When the line is attached to a subPort, the input buffer is sent to the application. So, if the LineShare script program has read some data from the line (to detect call type), it can put those data back.
Sample: QUEUEINPUT "\13\10CONNECT"
Note: since strings are "pushed" with this command,
QUEUEINPUT "\13\10CONNECT"
QUEUEINPUT " 9600"
is equivalent to:
QUEUEINPUT " 9600\13\10CONNECT"
, not to
QUEUEINPUT "\13\10CONNECT 9600"
• Command modified:
@ORIGINATE <subPort name> [ ( <busy-string> ) ]
marks the entry point for originating a call through the subPort.
if the (<busy-string>) is added then this string is sent to the application, if the line
is attached to some other subPort or is used through the main port.
If the (<busy-string>) is absent, the NO DIALTONE message is sent in this situation.
The @ORIGINATE label for some subPorts can be absent, in this case the NO DIALTONE message is returned to the applaiction when it tries to dial a number.
Samples:
@ORIGINATE "Fax"
@ORIGINATE "Fax" ("\r\n##The line is in use with another application\r\nBUSY\r\n")
HSRESET *
This form of the HSRESET command can be used in the @ORIGINATE phase only. It sets the handshaking options equal to those set by the application using this port.
SERRESET *
This form of the SERRESET command can be used in the @ORIGINATE phase only. It resets the port with the parameters equal to those set by the application using this port.
SETSPEED *
This form of the SETSPEED command can be used in the @ORIGINATE phase only. It sets the port speed equal to that set by the application using this port.
• Commands added:
EMITSTART
EMITCOMMAND <label>
When LineShare modem emulator processes AT-commands sent to the subPort, it stores these commands in the internal buffer.
EmitStart resets the built-in counter and EmitCommand sends the batch of stored AT-commands to the modem. Only part of AT-commands are sent each time and the built-in counter is set to the rest of them. When there is no more stored commands to be sent, EMITCOMMAND jumps to the specified label.
Sample:
EMITSTART
EMITCOMMAND 90
EMITCLEAR <string> [,<string>...]
This command removes the specified command from the set of stored command.
Sample:
EMITCLEAR "S7","&D"
removes "S7=<nnn>", "&Dnnn" (if any) from the set of stored AT-commands.
• ASK command is not supported (since it doesn't have any sense here). As a result, the "^*" parameter cannot be used.
• Parameters:
^1 can be used in the ORIGINATE phase only and specifies the phone number (i.e. the AT-command sent from the application after the ATD prefix).
^2 specifies the modem speaker regime: 0-2
^3 specifies the modem speaker volume: 1-3
^4 specifies the number of rings to wait for before processing an incoming call:0-7
Press the Option key - the Detach button in the LineShare control panel changes to the Debug button: click it and use the Go/Stop and Step buttons to debug a new LineShare script.
The script is read into RAM when you Attach subPorts, so Detach and re-Attach them if you have modified the script.